package com.yang.design.structure.decorator;

/**
 * 客户端
 */
public class Client {
    public static void main(String[] args) {
        Component component = new ConcreteComponent();
        component.operation();
        System.out.println("未装饰");

        System.out.println("==================");

        //对于客户端来说,被修饰的类和未被修饰的类都是一样的，都用Component,即都执行component.operation();对客户端是透明的
        component = new ConcreteDecorator(component);//传入需要被装饰的构建类
        component.operation();
        System.out.println("装饰后");
    }
    /*
    具体构建类的operation() 执行,完成基础功能
    未装饰
    ==================
    具体构建类的operation() 执行,完成基础功能
    具体装饰类方法执行，对具体构建类进行装饰！
    装饰后
     */
}
